# 导入VectorStoreIndex、Document和StorageContext类，用于向量索引、文档对象和存储上下文管理
from llama_index.core import VectorStoreIndex, Document, StorageContext

# 导入SimpleVectorStore类，作为简单的内存向量存储实现
from llama_index.core.vector_stores import SimpleVectorStore

# 构建示例文档内容列表
sample_texts = [
    "LlamaIndex支持持久化存储，可以保存和重用嵌入向量。",
    "通过持久化存储，可以避免重复计算嵌入向量，节省时间和成本。",
    "SimpleVectorStore是LlamaIndex提供的一个简单的向量存储实现。",
]

# 将每段文本包装为Document对象，便于后续索引处理
documents = [Document(text=text) for text in sample_texts]
# 创建一个SimpleVectorStore实例，作为内存中的向量存储
vector_store = SimpleVectorStore()
# 创建存储上下文，指定vector_store
storage_context = StorageContext.from_defaults(vector_store=vector_store)
# 基于文档列表和存储上下文创建向量索引，并显示进度条
index = VectorStoreIndex.from_documents(
    documents, storage_context=storage_context, show_progress=True
)
query_engine = index.as_query_engine()
response1 = query_engine.query("如何避免重复计算嵌入向量?")
print(response1)
response2 = query_engine.query("如何避免重复计算嵌入向量?")
print(response2)
